// ReviewMapper.java
package cn.tedu.medicalmanagementsystem.user.mapper;

import cn.tedu.medicalmanagementsystem.user.pojo.entity.Review;
import cn.tedu.medicalmanagementsystem.user.pojo.vo.ReviewVO;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface ReviewMapper {
    int insert(Review review);
    int updateEscortRating(Long escortId);
    //陪诊员——评价回复功能
    // 根据陪诊员id查询评价列表
    List<ReviewVO> selectByEscortId(@Param("escortId") Long escortId);
    // 更新评价回复（同时校验评价是否属于该陪诊员）
    int updateReply(@Param("reviewId") Long id,
                    @Param("escortId") Long escortId,
                    @Param("replyContent") String replyContent);
    // 检查评价是否属于该陪诊员
    boolean existsById(@Param("id") Long appointmentId);
    List<ReviewVO> selectByUserId(@Param("userid") Long userId);
    boolean existsByIdAndEscortId(@Param("id") Long id, @Param("escortId") Long escortId);
    List<ReviewVO> selectReviewsWithPage(@Param("offset") int offset, @Param("size") int size);
    List<ReviewVO> selectReviewsWithPage(
            @Param("userId") Long userId,
            @Param("escortId") Long escortId,
            @Param("minRating") Integer minRating,
            @Param("maxRating") Integer maxRating,
            @Param("replied") Boolean replied,
            @Param("offset") int offset,
            @Param("size") int size);
    int countReviews(
            @Param("userId") Long userId,
            @Param("escortId") Long escortId,
            @Param("minRating") Integer minRating,
            @Param("maxRating") Integer maxRating,
            @Param("replied") Boolean replied);
}